package com.lhgg.examol.dao;

import java.io.Serializable;
import java.util.List;

import com.lhgg.examol.util.PageUtil;

public interface IbaseDao<T, PK extends Serializable> {
	/**
	 * 执行添加操作
	 * 
	 * @return
	 */
	public boolean add(T entity);

	/**
	 * 执行批量添加操作
	 */
	public boolean addBatch(List<T> list);

	/**
	 * 执行根据主键删除操作
	 * 
	 * @return
	 */
	public boolean delete(PK pk);

	/**
	 * 执行修改操作
	 * 
	 * @return
	 */
	public boolean update(T entity);

	/**
	 * 执行查询全部操作
	 * 
	 * @return
	 */
	public List<T> getAll();

	/**
	 * 执行查询总记录数操作
	 * 
	 * @return
	 */
	public int getCount();

	/**
	 * 执行太条件的查询操作
	 * 
	 * @param entity
	 * @return
	 */
	public List<T> getAllByObject(T entity);

	/**
	 * 执行分页查询操作
	 * 
	 * @return
	 */
	public List<T> getPage(PageUtil<T> pageUtil);

	/**
	 * 执行根据主键查询的操作
	 * 
	 * @return
	 */
	public T getById(PK pk);

	/**
	 * 执行查询符合查询条件的总记录数的操作
	 */
	public int getCount(T entity);

	/**
	 * 执行带查询条件的分页查询的操作
	 */
	public List<T> getPage(PageUtil<T> pageUtil, T entity);
}
